HTMLify

style.css
Views: 32 | Author: cody
:root {
    --w: #fafafa;
    --b: #141414;
    --s: 1s;
    --d: calc(var(--s) / 6);
}

* {
    box-sizing: border-box;
}

body {
    margin: 0;
    padding: 0;
    width: 100vw;
    height: 100vh;
    overflow: hidden;
}

body,
.dots {
    display: flex;
    align-items: center;
    justify-content: center;
}

input {
    width: 100vw;
    height: 100vh;
    position: absolute;
    z-index: 4;
    opacity: 0;
    cursor: pointer;
}

input:checked~div {
    filter: invert(1);
}

input:checked+.bg::before {
    content: "CLICK TO DARK";
}

.bg {
    width: 100vw;
    height: 100vh;
    position: absolute;
    background: var(--b);
    z-index: -2;
}

.bg::before {
    content: "CLICK TO LIGHT";
    position: absolute;
    color: var(--w);
    width: 100%;
    text-align: center;
    bottom: 10vh;
    font-family: Arial, Helvetica, serif;
    font-size: 12px;
    text-shadow: 0 0 1px var(--w);
    opacity: 0.25;
}

.dots {
    width: 50vmin;
    height: 50vmin;
    position: relative;
}

.dots .dot {
    width: 50%;
    position: absolute;
    height: 7vmin;
    left: 0;
    transform-origin: 100% 50%;
    z-index: -1;
    animation: over-ring calc(var(--s) * 2) linear 0s infinite, spin calc(var(--s) * 8) linear 0s infinite;
}

.dots .dot::before {
    content: "";
    width: 5.5vmin;
    height: 5.5vmin;
    left: 0;
    box-sizing: border-box;
    border: 1vmin solid var(--b);
    position: absolute;
    background: var(--w);
    border-radius: 100%;
    animation: ball var(--s) ease-in-out 0s infinite alternate;
}

.dots .dot:nth-child(1) {
    animation-delay: calc(var(--d) * 0), calc(var(--d) * 0);
}

.dots .dot:nth-child(1)::before {
    animation-delay: calc(var(--d) * 0);
}

.dots .dot:nth-child(2) {
    animation-delay: calc(var(--d) * -1), calc(var(--d) * -4);
}

.dots .dot:nth-child(2)::before {
    animation-delay: calc(var(--d) * -1);
}

.dots .dot:nth-child(3) {
    animation-delay: calc(var(--d) * -2), calc(var(--d) * -8);
}

.dots .dot:nth-child(3)::before {
    animation-delay: calc(var(--d) * -2);
}

.dots .dot:nth-child(4) {
    animation-delay: calc(var(--d) * -3), calc(var(--d) * -12);
}

.dots .dot:nth-child(4)::before {
    animation-delay: calc(var(--d) * -3);
}

.dots .dot:nth-child(5) {
    animation-delay: calc(var(--d) * -4), calc(var(--d) * -16);
}

.dots .dot:nth-child(5)::before {
    animation-delay: calc(var(--d) * -4);
}

.dots .dot:nth-child(6) {
    animation-delay: calc(var(--d) * -5), calc(var(--d) * -20);
}

.dots .dot:nth-child(6)::before {
    animation-delay: calc(var(--d) * -5);
}

.dots .dot:nth-child(7) {
    animation-delay: calc(var(--d) * -6), calc(var(--d) * -24);
}

.dots .dot:nth-child(7)::before {
    animation-delay: calc(var(--d) * -6);
}

.dots .dot:nth-child(8) {
    animation-delay: calc(var(--d) * -7), calc(var(--d) * -28);
}

.dots .dot:nth-child(8)::before {
    animation-delay: calc(var(--d) * -7);
}

.dots .dot:nth-child(9) {
    animation-delay: calc(var(--d) * -8), calc(var(--d) * -32);
}

.dots .dot:nth-child(9)::before {
    animation-delay: calc(var(--d) * -8);
}

.dots .dot:nth-child(10) {
    animation-delay: calc(var(--d) * -9), calc(var(--d) * -36);
}

.dots .dot:nth-child(10)::before {
    animation-delay: calc(var(--d) * -9);
}

.dots .dot:nth-child(11) {
    animation-delay: calc(var(--d) * -10), calc(var(--d) * -40);
}

.dots .dot:nth-child(11)::before {
    animation-delay: calc(var(--d) * -10);
}

.dots .dot:nth-child(12) {
    animation-delay: calc(var(--d) * -11), calc(var(--d) * -44);
}

.dots .dot:nth-child(12)::before {
    animation-delay: calc(var(--d) * -11);
}

.dots .ring {
    border: 1.5vmin solid var(--w);
    width: 64%;
    height: 64%;
    border-radius: 100%;
    z-index: 0;
    box-shadow: 0 0 0 1vmin var(--b), 0 0 0 1vmin var(--b) inset;
}

@keyframes spin {
    100% {
        transform: rotate(-360deg);
    }
}

@keyframes ball {
    100% {
        left: 12vmin;
        width: 4vmin;
        height: 4vmin;
    }
}

@keyframes over-ring {

    0%,
    50% {
        z-index: -1;
    }

    51%,
    100% {
        z-index: 1;
    }
}

Comments